package drive.RemakeController;


import drive.RemakeService.ServiceInterface.AdminManagementService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/admin-management")
public class AdminManagementController {

    @Autowired
    private AdminManagementService adminManagementService;

    /**
     * 获取未审核的文章
     * @return 包含未审核文章列表的JSON字符串
     */
    @GetMapping("/pending")
    public String getPendingReviewArticles() {
        return adminManagementService.getPendingReviewArticles();
    }

    /**
     * 更改文章为发布状态
     * @param articleId 文章ID
     * @return 操作结果的JSON字符串
     */
    @PutMapping("/publish")
    public String publishArticle(@RequestParam int articleId) {
        return adminManagementService.publishArticle(articleId);
    }

    @PutMapping("/draft")
    public String draftArticle(@RequestParam int articleID){
        return adminManagementService.redraftArticle(articleID);
    }

    /**
     * 获取所有未处理的举报
     * @return 包含未处理举报列表的JSON字符串
     */
    @GetMapping("/report")
    public String getPendingReports() {
        return adminManagementService.getPendingReports();
    }

    /**
     * 修改举报为已处理并提交处理结果
     * @param reportId 举报ID
     * @param handlingResult 处理结果
     * @return 操作结果的JSON字符串
     */
    @PutMapping("/handle")
    public String handleReport(
            @RequestParam int reportId,
            @RequestParam String handlingResult) {
        return adminManagementService.handleReport(reportId, handlingResult);
    }

    /**
     * 获取文章总量
     * @return 包含文章总量的JSON字符串
     */
    @GetMapping("/count")
    public String getArticleCount() {
        return adminManagementService.getArticleCount();
    }
    /**
     * 按月获取文章总量
     * @return 包含每月文章总量的JSON字符串
     */
    @GetMapping("/count/monthly")
    public String getArticleCountMonthly() {
        return adminManagementService.getArticleCountMonthly();
    }

    /**
     * 获取交易总量（订单数和金额）
     * @return 包含交易总量信息的JSON字符串
     */
    @GetMapping("/total")
    public String getTotalTransactions() {
        return adminManagementService.getTotalTransactions();
    }

    /**
     * 按月统计交易总量（订单数和金额）
     * @return 包含每月交易总量信息的JSON字符串
     */
    @GetMapping("/total/monthly")
    public String getTotalTransactionsMonthly() {
        return adminManagementService.getMonthlyTransactionStats();
    }

    @PutMapping("/ban")
    public String ban_user(int userID){
        return adminManagementService.ban_user(userID);
    }

    /**
     * 分页获取用户列表
     * @param pageNum 页码
     * @param pageSize 每页大小
     * @return 包含用户列表和分页信息的JSON字符串
     */
    @GetMapping("/list")
    public String getUserList(
            @RequestParam int pageNum,
            @RequestParam int pageSize) {
        return adminManagementService.getUserList(pageNum, pageSize);
    }
}